﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cma.cimiss.client;
using cma.cimiss.demo.util;

namespace cma.cimiss.demo.clib.StaElemSearchAPI
{
    /*
     * 客户端调取，站点资料检索，返回RetArray2D对象
     */
    class StaElemSearchAPI_CLIB_callAPI_to_array2D
    {
        /* 1. 定义client对象 */
        string serverIP = "10.20.76.32";
        int serverPort = 1888;
        /*
         * main方法，程序入口
         * 如：按时间检索地面数据要素 getSurfEleByTime
         */
        static void Main1(string[] args) {
            Console.WriteLine("call test API");
            new StaElemSearchAPI_CLIB_callAPI_to_array2D().test();
		}
        public void test()
        {
		/* 1. 定义client对象 */
		DataQueryClient client = new DataQueryClient() ;
		
		/* 2. 调用方法的参数定义，并赋值 */
		/* 2.1 用户名&密码 */
		string userId = "user_rdb" ;
		string pwd = "user_rdb_pwd1" ;
		/* 2.2  接口ID */
		string interfaceId = "getSurfEleByTime" ;		
		/* 2.3  接口参数，多个参数间无顺序 */
		Dictionary<string, string> param = new Dictionary<string, string>();
		//必选参数
		param.Add("dataCode", "SURF_CHN_MUL_HOR") ; //资料代码
		param.Add("elements", "Station_ID_C,PRE_1h,PRS,RHU,VIS,WIN_S_Avg_2mi,WIN_D_Avg_2mi,Q_PRS") ;//检索要素：站号、站名、小时降水、气压、相对湿度、能见度、2分钟平均风速、2分钟风向
		param.Add("times", "20140617000000") ; //检索时间
		//可选参数
		param.Add("orderby", "Station_ID_C:ASC") ; //排序：按照站号从小到大
		 param.Add("limitCnt", "10") ; //返回最多记录数：10
		/* 2.4 返回对象 */
		RetArray2D retArray2D = new RetArray2D() ;
		
		/* 3. 调用接口 */
		try {
			//初始化接口服务连接资源
			client.initResources() ;
			//调用接口
			int rst = client.callAPI_to_array2D(userId, pwd, interfaceId, param, retArray2D) ;
			//输出结果
			if(rst == 0) { //正常返回
			  ClibUtil clibUtil = new ClibUtil() ;
			  clibUtil.outputRst( retArray2D ) ;
			} else { //异常返回
				Console.WriteLine( "[error] StaElemSearchAPI_CLIB_callAPI_to_array2D." ) ;				
				Console.Write( "\treturn code: {0}. \n", rst ) ;
				Console.Write( "\terror message: {0}.\n", retArray2D.request.errorMessage ) ;
			}
		} catch (Exception e) {
			//异常输出
			Console.WriteLine(e.Message) ;
		} finally {
			//释放接口服务连接资源
			client.destroyResources() ;
            Console.ReadKey();
		}
	}
    }
}
